package ru.pb.auth.configs;

import java.io.IOException;

import org.apache.log4j.Logger;

import ru.pb.global.configs.Config;
import ru.pb.global.utils.ExitCode;

/**
 * @author Felixx
 */
public class AuthServerConfig
{
	private static final Logger _log = Logger.getLogger(AuthServerConfig.class);

	private static final String FileName = "./configs/authserver.ini";

	/** Попыток логина до кика. */
	public static int AUTH_COUNT_OF_TRY_BEFORE_KICK;
	/** Попыток логина до бана. */
	public static int AUTH_COUNT_OF_TRY_BEFORE_BAN;
	/** На сколько минут банить */
	public static int AUTH_TRY_BAN_IN_MINUTES;

	/** Автосоздание аккаунтов */
	public static boolean AUTH_CREATE_ACCOUNTS;
	/** Принимать все входящие ГСы */
	public static boolean ACCEPT_NEW_GAMESERVER;

	/** Юзать ли MD5 Шифрацию пароля */
	public static boolean USE_MD5;
	
	//TODO: перенести в другой конфиг?
	public static boolean BATTLE_AI = false;
	public static boolean BATTLE_KASTETS = false;
	public static boolean BATTLE_SNIPERS = false;
	public static boolean BATTLE_SHOOTGANS = false;
	public static boolean BATTLE_UNK = false;

	public static void load()
	{
		try
		{
			Config conf = new Config(FileName);

			AUTH_COUNT_OF_TRY_BEFORE_KICK = conf.getIntegerValue("authserver", "LoginCountToKick", 10);
			AUTH_COUNT_OF_TRY_BEFORE_BAN = conf.getIntegerValue("authserver", "LoginCountToBan", 100);
			AUTH_TRY_BAN_IN_MINUTES = conf.getIntegerValue("authserver", "BanMinutes", 10);

			AUTH_CREATE_ACCOUNTS = conf.getBooleanValue("authserver", "AutoCreateAccount", true);
			ACCEPT_NEW_GAMESERVER = conf.getBooleanValue("authserver", "AcceptNewGameServer", true);
			USE_MD5 = conf.getBooleanValue("crypt", "UseMd5", false);

			//TODO: Перенести.
			BATTLE_AI = conf.getBooleanValue("battle_types", "battle_ai", false);
			BATTLE_KASTETS = conf.getBooleanValue("battle_types", "battle_kastets", false);
			BATTLE_SNIPERS = conf.getBooleanValue("battle_types", "battle_snipers", false);
			BATTLE_SHOOTGANS = conf.getBooleanValue("battle_types", "battle_shootgans", false);
			BATTLE_UNK = conf.getBooleanValue("battle_types", "battle_unk", false);
			//
		}
		catch(IOException e)
		{
			_log.error("Не возможно загрузить файлы конфигурации.", e);
			System.exit(ExitCode.CODE_ERROR.getId());
		}
		catch(Exception e)
		{
			_log.error("Ошибка доступа к файлу или директории.", e);
			System.exit(ExitCode.CODE_ERROR.getId());
		}
		finally
		{
			_log.info(FileName + " Успешно загружен.");
		}
	}
}